﻿using System;
namespace Producers.Karis.Xtee.Riik.Ee.Producer.Karis {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="kar_liik_andmed", Namespace="http://producers.karis.xtee.riik.ee/producer/karis", Target=typeof(KarLiikAndmed))]
    public class KarLiikAndmedSerializer : global::Xtee.Core.Types.AbstractXteeSerializable {
        
        protected IKarLiikAndmed clazz;
        
        public KarLiikAndmedSerializer(IKarLiikAndmed clazz) {
            this.clazz = clazz;
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            Writer.WriteStartElement("ttKokku.cKar_liik");
            if (clazz.TtKokkucKarLiik!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucKarLiik))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtKokkucKarLiik");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.iKar_aasta");
            if (clazz.TtKokkuiKarAasta!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtKokkuiKarAasta))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.iKar_kuu");
            if (clazz.TtKokkuiKarKuu!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtKokkuiKarKuu))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.iKar_paev");
            if (clazz.TtKokkuiKarPaev!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtKokkuiKarPaev))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.cKatseaeg");
            if (clazz.TtKokkucKatseaeg!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucKatseaeg))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.iKar_trahv_yhik");
            if (clazz.TtKokkuiKarTrahvYhik!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtKokkuiKarTrahvYhik))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.cTrahv_yhik_liik");
            if (clazz.TtKokkucTrahvYhikLiik!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucTrahvYhikLiik))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.cKar_trahv_raha");
            if (clazz.TtKokkucKarTrahvRaha!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucKarTrahvRaha))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.cTrahv_raha_liik");
            if (clazz.TtKokkucTrahvRahaLiik!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucTrahvRahaLiik))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttKokku.cKar_muu");
            if (clazz.TtKokkucKarMuu!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtKokkucKarMuu))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
        START:
            if ((Reader.LocalName == "ttKokku.cKar_liik")) {
                goto ttKokkucKar_liik;
            }
            else {
                if ((Reader.LocalName == "ttKokku.iKar_aasta")) {
                    goto ttKokkuiKar_aasta;
                }
                else {
                    if ((Reader.LocalName == "ttKokku.iKar_kuu")) {
                        goto ttKokkuiKar_kuu;
                    }
                    else {
                        if ((Reader.LocalName == "ttKokku.iKar_paev")) {
                            goto ttKokkuiKar_paev;
                        }
                        else {
                            if ((Reader.LocalName == "ttKokku.cKatseaeg")) {
                                goto ttKokkucKatseaeg;
                            }
                            else {
                                if ((Reader.LocalName == "ttKokku.iKar_trahv_yhik")) {
                                    goto ttKokkuiKar_trahv_yhik;
                                }
                                else {
                                    if ((Reader.LocalName == "ttKokku.cTrahv_yhik_liik")) {
                                        goto ttKokkucTrahv_yhik_liik;
                                    }
                                    else {
                                        if ((Reader.LocalName == "ttKokku.cKar_trahv_raha")) {
                                            goto ttKokkucKar_trahv_raha;
                                        }
                                        else {
                                            if ((Reader.LocalName == "ttKokku.cTrahv_raha_liik")) {
                                                goto ttKokkucTrahv_raha_liik;
                                            }
                                            else {
                                                if ((Reader.LocalName == "ttKokku.cKar_muu")) {
                                                    goto ttKokkucKar_muu;
                                                }
                                                else {
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        ttKokkucKar_liik:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>kar_liik_andmed>ttKokku.cKar_liik");
            }
            clazz.TtKokkucKarLiik = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cKar_liik")).Value;
            goto START;
        ttKokkuiKar_aasta:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkuiKarAasta = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttKokku.iKar_aasta")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkuiKar_kuu:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkuiKarKuu = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttKokku.iKar_kuu")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkuiKar_paev:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkuiKarPaev = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttKokku.iKar_paev")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkucKatseaeg:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkucKatseaeg = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cKatseaeg")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkuiKar_trahv_yhik:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkuiKarTrahvYhik = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttKokku.iKar_trahv_yhik")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkucTrahv_yhik_liik:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkucTrahvYhikLiik = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cTrahv_yhik_liik")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkucKar_trahv_raha:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkucKarTrahvRaha = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cKar_trahv_raha")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkucTrahv_raha_liik:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkucTrahvRahaLiik = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cTrahv_raha_liik")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttKokkucKar_muu:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtKokkucKarMuu = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttKokku.cKar_muu")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        }
    }
}
